package bibliOnline.db;

import bibliOnline.util.details.BookData;
import bibliOnline.util.details.RequestData;
import bibliOnline.util.details.UserDetails;
import java.util.ArrayList;

/**
 * Classe che si occupa di incapsulare l'elenco dei libri trovati nella ricerca.
 * Creata per essere trasformata in formato Json, mostra anche gli eventuali errori.
 * 
 * @author Gabri
 */
public class DBResponse {

    boolean isErrorMessage;
    String errorMessage, username;
    ArrayList<BookData> books;
    ArrayList<RequestData> requests;
    ArrayList<UserDetails> users;
    int remainingTime;

    /**
     * Costruttore vuoto: nessun errore
     */
    public DBResponse() {
        isErrorMessage = false;
    }

    /**
     * Costruttore, aggiunge i libri e riporta che non ci sono stati errori
     * 
     * @param books Risultato della ricerca
     */
    public DBResponse(ArrayList<BookData> books) {
        this.isErrorMessage = false;
        this.errorMessage = null;
        this.books = books;
    }
    
    public void InitRequest(ArrayList<RequestData> requests) {
        this.isErrorMessage = false;
        this.errorMessage = null;
        this.requests = requests;
    }

    /**
     * Costruttore, usato nel caso di errori
     * 
     * @param errorMessage Messaggio dell'errore
     */
    public DBResponse(String errorMessage) {
        this.isErrorMessage = true;
        this.errorMessage = errorMessage;
        this.books = null;
    }
    
    public DBResponse(int remainingTime) {
        this.isErrorMessage = false;
        this.remainingTime = remainingTime;
    }
    
    /**
     * Setta il nome dell'utente coinvolto
     * 
     * @param username Nome dell'utente
     */
    public void setUsername(String username) {
        this.username = username;
    }
    
    /**
     * Inserisce la lista degli utenti
     * 
     * @param users lista di oggetti UserDetails
     */
    public void insertUserList(ArrayList<UserDetails> users) {
        this.users = users;
    }
}
